我在我的单元测试流利断言工作,但是使用的ShouldBeEquivalentTo
,ShouldAllBeEquivalentTo
以及BeEquivalentTo
目前还不清楚.
例如; 所有以下语句都通过,因此函数看起来是等效的.
Lista = new List () { "james", "wood" }; List b = new List () { "james", "wood" }; a.ShouldBeEquivalentTo(b); a.ShouldAllBeEquivalentTo(b); a.Should().BeEquivalentTo(b);
我为什么要使用一个而不是另一个?
ShouldBeEquivalentTo
并且ShouldAllBeEquivalentTo
是相同的,并将进行递归结构比较.但由于行为是高度可配置的,因此某些选项支持使用属性表达式来包含或排除某些成员.但是,T
表达式中的含义是指使用List
时的根对象()的类型ShouldBeEquivalentTo
,以及string
是否ShouldAllBeEquivalentTo
使用了它.前者作用于整个物体而后者作用于整个物体IEnumerable
.
Should().BeEquivalentTo()
是一个更简单的实现,它将只使用顺序不敏感的比较Equals
.此方法将在下一次更改(v5.x)中删除.